From 1421ca9681ca47576857ef7ee7727327c687370f Mon Sep 17 00:00:00 2001 From: "awilliam@xenbuild.aw" Date: Thu, 30 Mar 2006 12:40:24 -0700 Subject: [PATCH] [IA64] Fix domainU boot when VTi domainexists This patch intends to fix domainU boot after VTi domain booted up. Currently domainU can't boot after domain VTi booted up.The root cause is when VTi domain exists, iva register points to ivt which belongs to VTi domain but different to domU. After DomU createing and being scheduled for fist time, context_switch won't be executed completely but through another execution path to leave kernel. This will lead to LP's(run domU) iva and pta point to VTi domain's ivt and pta. So when DomainU boots, domain VTi and domainU will hang. Singed-off-by: Zhang xiantao Singed-off-by: Kevin Tian --- xen/arch/ia64/xen/process.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/xen/arch/ia64/xen/process.c b/xen/arch/ia64/xen/process.c index 03445c2de9..311ebc313f 100644 --- a/xen/arch/ia64/xen/process.c +++ b/xen/arch/ia64/xen/process.c @@ -30,6 +30,7 @@ #include #include #include +#include #include "hpsim_ssc.h" #include #include @@ -63,11 +64,15 @@ extern unsigned long dom0_start, dom0_size; void schedule_tail(struct vcpu *prev) { + extern char ia64_ivt; context_saved(prev); if (VMX_DOMAIN(current)) { vmx_do_launch(current); } else { + ia64_set_iva(&ia64_ivt); + ia64_set_pta(VHPT_ADDR | (1 << 8) | (VHPT_SIZE_LOG2 << 2) | + VHPT_ENABLED); load_region_regs(current); vcpu_load_kernel_regs(current); } -- 2.30.2